package com.base.logistics.jdl.request;

import com.base.logistics.jdl.bean.RequestParams;
import com.base.logistics.config.JdlConfig;

/**
 * <pre>
 * 京东物流api接口
 * </pre>
 * @since 2021-02-21
 */
public interface JdlRequestConfig {

    /**
     * 设置配置
     * @param config {@link JdlConfig} 配置
     * @throws Exception {@link Exception} 异常信息
     */
    void setConfig(JdlConfig config) throws Exception;

    /**
     * 获取配置
     * @return {@link JdlConfig} 配置
     */
    JdlConfig getConfig();

    /**
     * 执行请求
     * @param request {@link RequestParams} 统一请求对象
     * @param <T> 返回对象
     * @param clazz 返回对象
     * @return 请求结果
     * @throws Exception {@link Exception} 异常信息
     */
    <T> T execute(RequestParams request, Class<T> clazz) throws Exception;

}
